package com.cdu.guoxinan.www.smartcom.controller;

import com.cdu.guoxinan.www.smartcom.domian.dto.PropertyQueryDTO;
import com.cdu.guoxinan.www.smartcom.domian.pojo.Property;
import com.cdu.guoxinan.www.smartcom.domian.vo.PropertyVO;
import com.cdu.guoxinan.www.smartcom.service.PropertyService;
import com.cdu.guoxinan.www.smartcom.unit.model.R;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/property")
@Api(tags = "房产控制器")
public class PropertyController {
    @Resource
    private PropertyService propertyService;
    //分页查询所有房产信息
    @GetMapping("/queryPage")
    @ApiOperation("分页查询所有房产信息")
    public R queryPage(PropertyQueryDTO propertyQueryDTO) {
        PageInfo<PropertyVO> pageInfo = propertyService.queryPage(propertyQueryDTO);
        return R.ok(pageInfo.getList(), pageInfo.getTotal());
    }

    //添加房产信息
    @PostMapping("/add")
    @ApiModelProperty("添加房产信息")
    public R add(Property property) {
        return propertyService.add(property)?R.ok("添加成功"):R.error("添加失败");
    }

    //修改房产信息
    @PostMapping("/update")
    @ApiModelProperty("修改房产信息")
    public R update(Property property) {

        return propertyService.update(property)? R.ok("修改成功"):R.error("修改失败");
    }
    //删除房产信息
    @PostMapping("/delete")
    @ApiModelProperty("删除房产信息")
    public R delete(Integer id) {
        return propertyService.delete(id)? R.ok("删除成功"):R.error("删除失败");
    }


    /**
     * 根据用户ID获取该用户拥有的所有房产信息
     * 拿取下单后的用户地址信息
     */
    @GetMapping("/getUserProperties")
    @ApiOperation("根据用户ID获取该用户拥有的所有房产信息")
    public R getUserProperties(@RequestParam(required = false) Long userId) {
        try {
            if (userId == null) {
                return R.error("用户ID不能为空");
            }
            List<Property> properties = propertyService.getUserProperties(userId);
            return R.ok(properties);
        } catch (Exception e) {
            return R.error("获取用户房产信息失败：" + e.getMessage());
        }
    }
}
